using System;
using System.Collections.Generic;
using System.Text;

namespace RapidHDL
{
    public class Workbench : MasterWorkbench
    {
        public override void ConfigureSettings()
        {
            Settings.SkipVerilogGeneration = false;
            Settings.UseStart = false;
            Settings.BuildHardware = true;
            Settings.ForceBuildHardware = false;
            Settings.RunFromXilinx = true;
            Settings.ClockFrequency = 1;
            Settings.UseSDRAM = true;
            Settings.BuildRemote = false;
            Settings.DisableCheckWellFormed = true;
            Settings.BuildServerPath = "seb124-20:8080";
            //Settings.BuildServerPath = "xilinx.hopto.org:80";
            UseMasterSettings = true;
        }

        public override RapidHardware BuildRapidHardware()
        {
            //QuickFabricHardware oDefault = new QuickFabricHardware();
            
            //SNNHardware oDefault = new SNNHardware();
            TestMicroCore oDefault = new TestMicroCore();
            //TestLogicBlock oDefault = new TestLogicBlock();
            //TestFabric oDefault = new TestFabric();
            //TestRAM oDefault = new TestRAM();
            //TestALUBlock oDefault = new TestALUBlock();
            //TestPCSDRAM oDefault = new TestPCSDRAM();            
            //TestPCIO oDefault = new TestPCIO();
            //TestPipelineSerializer oDefault = new TestPipelineSerializer();
            //TestPipelineAssemblerBuffer oDefault = new TestPipelineAssemblerBuffer();
            //TestPipeLineBuffer oDefault = new TestPipeLineBuffer();
            //TestPipelineSerialAssembler oDefault = new TestPipelineSerialAssembler();
            //TestPipelineSorter oDefault = new TestPipelineSorter();
            //TestFIFOInterface oDefault = new TestFIFOInterface();
            //TestPipeline oDefault = new TestPipeline();
            //TestCounter oDefault = new TestCounter();

            return oDefault;
        }

        public override bool BuildRapidHardwares()
        {
            TestCounter oDemoCounter = new TestCounter();
            RegisterRapidHardware("counter", oDemoCounter);

            DemoStateMachine oDemoStateMachine = new DemoStateMachine();
            RegisterRapidHardware("state_machine", oDemoStateMachine);

            return true;
        }

        
    }
}
